package com.demo.java.OD451_500.OD458;

import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【螺旋数字矩阵(C&D卷)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146343061
 */
public class OdMain {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 读取输入
        int n = scanner.nextInt();  // 数字总数
        int m = scanner.nextInt();  // 行数

        // 计算每行的列数
        int k = (n + m - 1) / m;

        // 创建一个 m 行 k 列的矩阵并初始化为 "*"
        String[][] matrix = new String[m][k];
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < k; j++) {
                matrix[i][j] = "*";
            }
        }

        int num = 1;  // 当前填充的数字
        int x = 0, y = 0;  // 当前填充的位置

        // 填充矩阵
        while (num <= n) {
            // 向右填充
            while (0 <= y && y < k && matrix[x][y].equals("*")) {
                matrix[x][y] = (num <= n) ? String.valueOf(num) : "*";
                num++;
                y++;
            }

            // 向下填充
            x++;
            y--;

            // 向左填充
            while (0 <= x && x < m && matrix[x][y].equals("*")) {
                matrix[x][y] = (num <= n) ? String.valueOf(num) : "*";
                num++;
                x++;
            }

            x--;
            y--;

            // 向上填充
            if (0 <= x && x < m) {
                while (0 <= y && y < k && matrix[x][y].equals("*")) {
                    matrix[x][y] = (num <= n) ? String.valueOf(num) : "*";
                    num++;
                    y--;
                }

                y++;
                x--;
            }

            // 向右填充
            if (0 <= y && y < k) {
                while (0 <= x && x < m && matrix[x][y].equals("*")) {
                    matrix[x][y] = (num <= n) ? String.valueOf(num) : "*";
                    num++;
                    x--;
                }

                x++;
                y++;
            }
        }

        // 输出矩阵
        for (String[] row : matrix) {
            System.out.println(String.join(" ", row));
        }

        scanner.close();
    }
}